home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / ip / ka9q / MNetsrc.hqx / Mac TCP_IP Source v.33 / smtp.h < prev    next >
Text File  |  1989-02-16  |  3KB  |  99 lines

  1. #define SMTPTRACE            /* enable tracing for smtp */
  2. #define MAXSESSIONS    10        /* most connections allowed */
  3. #define JOBNAME        13        /* max size of a job name with null */
  4. #ifdef MAC
  5. #define    LINELEN        256
  6. #else
  7. #define    LINELEN        128
  8. #endif
  9. #define SLINELEN    32
  10. #define MBOXLEN        8        /* max size of a mail box name */
  11.  
  12.  
  13. /* types of address used by smtp in an address list */
  14. #define BADADDR    0
  15. #define LOCAL    1
  16. #define DOMAIN    2
  17.  
  18. /* a list entry */
  19. struct list {
  20.     struct list *next;
  21.     char *val;
  22.     char type;
  23. };
  24.  
  25.  
  26. /* Per-session control block  used by smtp server */
  27. struct mail {
  28.     struct tcb *tcb;    /* TCP control block pointer */
  29.     char state;
  30. #define    COMMAND_STATE    0
  31. #define    DATA_STATE    1
  32.     char *system;        /* Name of remote system */
  33.     char *from;        /* sender address */
  34.     struct list *to;    /* Linked list of recipients */
  35.     char buf[LINELEN];    /* Input buffer */
  36.     char cnt;        /* Length of input buffer */
  37.     FILE *data;        /* Temporary input file pointer */
  38. };
  39.  
  40. /* used by smtpcli as a queue entry for a single message */
  41. struct smtp_job {
  42.     struct     smtp_job *next;    /* pointer to next mail job for this system */
  43.     char    jobname[9];    /* the prefix of the job file name */
  44.     char    *from;        /* address of sender */
  45.     struct list *to;    /* Linked list of recipients */
  46. };
  47.  
  48. /* control structure used by an smtp client session */
  49. struct smtp_cb {
  50.     struct tcb *tcb;    /* tcp task control buffer */
  51.     int32    ipdest;        /* address of forwarding system */
  52.     char     state;        /* state machine placeholder */
  53. #define CLI_INIT_STATE    0
  54. #define CLI_OPEN_STATE    1
  55. #define    CLI_HELO_STATE    2
  56. #define CLI_MAIL_STATE    3
  57. #define CLI_RCPT_STATE    4
  58. #define    CLI_SEND_STATE    5
  59. #define    CLI_UNLK_STATE    6
  60. #define CLI_QUIT_STATE    7
  61. #define CLI_IDLE_STATE    8
  62.     char    *wname;        /* name of workfile */
  63.     char    *tname;        /* name of data file */
  64.     char    buf[LINELEN];    /* Input buffer */
  65.     char    cnt;        /* Length of input buffer */
  66.     FILE    *tfile;
  67.     struct    smtp_job *jobq;
  68.     char    goodrcpt;    /* are any of the rcpt ok */
  69.     char    cts;        /* clear to send state indication */
  70.     int    rcpts;        /* number of unacked rcpt commands */
  71.     struct    list     *errlog;    
  72. };
  73.  
  74. /* smpt server routing mode */
  75. #define    QUEUE    1
  76.  
  77. #define    NULLLIST    (struct list *)0
  78. #define    NULLMAIL    (struct mail *)0
  79. #define    NULLCB        (struct smtp_cb *)0
  80. #define NULLJOB        (struct smtp_job *)0
  81.  
  82.  
  83. extern char mailspool[];
  84. extern char mailqdir[];        /* Outgoing spool directory */
  85. extern char routeqdir[];    /* spool directory for a router program */
  86. extern char mailqueue[];    /* Prototype of work file */
  87. extern char maillock[];        /* Mail system lock */
  88. extern char hostname[];
  89. extern char alias[];
  90. extern int32 mailroute();
  91. extern int mlock(),rmlock(),queuejob();
  92. extern char *ptime();
  93. extern void del_list();
  94. extern long get_msgid();
  95. extern int16 smtpmode;
  96. extern char *fgets();
  97. extern struct list *addlist();
  98.  
  99.